The use of integrated circuits (ICs) to store sensitive data and carry out secure transactions has become increasingly ubiquitous. As a result, ICs often require protection against attacks that aim to extract information. A physical unclonable function (PUF) is a cost-effective way of providing an extra layer of protection against physical attacks. Rather than storing secret keys in non-volatile memory, which is often difficult and expensive, a PUF extracts secrets from complex physical systems. Typically, a PUF is a function that is embodied in a physical structure and is easy to evaluate but hard to predict. The physical structure that contains the PUF consists of at least one random component, the making of which cannot be easily controlled. Applications of PUF include challenge-response authentication, where access depends on providing correct responses to challenges, and the challenge-response pairs are generated by a PUF. Previous efforts of implementing PUFs have focused primarily on generating randomness utilizing active devices and operating conditions, such as voltage or temperature.